#include <stdio.h>

typedef struct tag_product product_t;
typedef struct tag_creator creator_t;

struct tag_product {
    int (*operation)(void);
};

struct tag_creator {
    product_t *(*factory_method)(void);
};

int product_a_operation(void) {
    printf("product_a_operation\n");
    return 0;
}

product_t product_a = {
    product_a_operation
};

int product_b_operation(void) {
    printf("product_b_operation\n");
    return 0;
}

product_t product_b = {
    product_b_operation
};

int creator_a_factory_method(void) {
    printf("creator_a_factory_method\n");
    return 0;
}

